package com.cw.myset;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.function.Consumer;

public class SetDemo1 {
    public static void main(String[] args) {
        /*利用Set系列的集合，添加字符串，并使用多种方式遍历。
        不使用for循环是因为Set集合没有索引
        迭代器
        增强for
        Lambda表达式*/

        // 1.创建Set集合的对象
        Set<String> s = new HashSet<>();

        // 2.添加元素
        //如果当前元素是第一次添加，可以添加成功，返回true
        //如果当前元素是第二次添加，添加失败，返回false
        boolean r1 = s.add("aaa"); //不可重复
        boolean r2 = s.add("aaa");
        boolean r3 = s.add("bbb");
        boolean r4 = s.add("ccc");

        // s.get(); 无索引
/*        System.out.println(r1); //true
        System.out.println(r2); //false*/

        // 3.打印集合
        //无序
//        System.out.println(s); //[aaa,ccc,bbb]

        //迭代器遍历
   /*     Iterator<String> it = s.iterator();
        while (it.hasNext()){
            String str = it.next();
            System.out.println(str);
        }*/

        //增强for
/*        for (String str : s) {
            System.out.println(str);
        }*/

        //Lambda表达式
        // 这里new的不是Consumer接口的对象，而是后面匿名内部类的对象
/*        s.forEach(new Consumer<String>() {
            @Override
            public void accept(String str) {
                System.out.println(str);
            }
        });*/

//        s.forEach((String str)-> {
//                System.out.println(str);
//        });

//        s.forEach(str -> System.out.println(str));

        s.forEach(System.out::println);
    }
}
